<?  
  set_time_limit(4500);
  /* Se asegura que el archivo es incluido por el index */
    defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );  
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Menu_componente_exe( $this );
    
	class Menu_componente_exe extends Exe
	{
	function Menu_componente_exe( &$oModule )
		{
			$this->Exe( $oModule );
		}
		// AGREGAR_MENUCOMPONENTE
		function insert()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Menu_componente_frm' );
			// Convierte a variables los datos del Formulario asociado a la accion
				extract( $oForm->getFieldArray() );
			if ( $cListaParam )
			{
				$cParametros = '';
				foreach( explode( ',', $cListaParam ) as $cParametro )
				{
					$cValue = getParam($cParametro);
					if ( $cValue  ) $cParametros .= $cParametro . '=' . $cValue  .'&amp;';
				}
				$cParametros = substr($cParametros , 0, -5);
			}			
			$ncOrden = $this->oDatabase->nextKey("gtMenuComponente", "ncOrden", "ncMenu=$ncMenu");
			$this->oDatabase->insert("gtMenuComponente"
								,"ncMenu", $ncMenu
								,"nPanel", $nPanel
								,"cParametros", $cParametros
								,"ncComponente", $ncComponente
								,"ncOrden", $ncOrden
								,"nOrden", $nOrden);
		}
		
		// ELIMINAR_MENUCOMPONENTE
		function delete()
		{
			$ncMenu = getParam( 'ncMenu' );
			$ncOrden = getParam( 'ncOrden' );
			$this->oDatabase->delete("gtMenuComponente","ncMenu", $ncMenu,"ncOrden", $ncOrden );
		}
		
		// MODIFICAR_MENUCOMPONENTE
		function update()
		{
			$oForm = $this->oModule->loadClass( 'Menu_componente_frm' );
			// Convierte a variables los datos del Formulario asociado a la accion
			extract( $oForm->getFieldArray() );
			if ( $cListaParam )
			{
				$cParametros = '';
				foreach( explode( ',', $cListaParam ) as $cParametro )
				{
					$cValue = getParam($cParametro);
					if ( $cValue  ) $cParametros .= $cParametro . '=' . $cValue  .'&amp;';
				}
				$cParametros = substr($cParametros , 0, -5);
			}			
			$this->oDatabase->update("gtMenuComponente"
								,"nOrden", $nOrden
								,"nPanel", $nPanel
								 ,"ncMenu", $ncMenu
								 ,"cParametros", $cParametros
								 ,"ncComponente", $ncComponente
								,"WHERE"
								 ,"ncMenu", $ncMenuClave
								 ,"ncOrden", $ncOrden );
			$this->setInputData( $ncMenuComponente, $cdMenuComponente );
		}
		
		function updateOrder()
		{
			$nCambiarOrden = getParam('nCambiarOrden');
			$ncMenu = getParam('ncMenu');
			$ncComponente = getParam('ncComponente');
			$nOrden = getParam('nOrden');
			if ( $nCambiarOrden  && $ncComponente )
			{
				if ( $nCambiarOrden == -1 )
					list( $ncComponenteCbo, $nOrdenCbo ) = $this->oDatabase->getArray( "SELECT ncComponente, nOrden FROM gtMenuComponente WHERE ncMenu = $ncMenu AND nOrden < $nOrden ORDER BY nOrden " , 0, 1);
				else
					list( $ncComponenteCbo, $nOrdenCbo ) = $this->oDatabase->getArray( "SELECT ncComponente, nOrden FROM gtMenuComponente WHERE ncMenu = $ncMenu AND nOrden > $nOrden ORDER BY nOrden ", 0, 1 );
				if ( $ncComponenteCbo )
				{
					$this->oDatabase->update("gtMenuComponente"
									,"nOrden", $nOrden
									,"WHERE"
									,"ncMenu", $ncMenu
									 ,"ncComponente", $ncComponenteCbo);
				} else
				{ // Si no hay ni mayor ni menor => pone 1 (minimo)  o la cantidad de registros como maximo
					if ( $nCambiarOrden == -1 )
						$nOrdenCbo = 1;
					else
						$nOrdenCbo = $this->oDatabase->getData( "SELECT count(*) FROM gtMenuComponente WHERE ncMenu = $ncMenu " );
				}
				$this->oDatabase->update("gtMenuComponente"
								,"nOrden", $nOrdenCbo
								,"WHERE"
								 ,"ncMenu", $ncMenu
								 ,"ncComponente", $ncComponente);
			}
		}
		
	}
?>